package LeetCode;

import java.util.Arrays;

/**
 * @title: 只出现一次的数字
 * @description: 给定一个非空整数数组，除了某个元素只出现一次以外，
 *               其余每个元素均出现两次。找出那个只出现了一次的元素。
 *               你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗？
 * @author: Cter
 * @date: 2020/1/19
 */
public class OnlyOnceNumber {
//
//    /**
//     * @description: 比较法
//     * @param num
//     * @return
//     */
//    public int SingleNumber(int[] num){
//        Arrays.sort(num);
//        for (int i=0;i<num.length;i+=2){
//            if (num[i]!=num[i+1]){
//                return num[i];
//            }
//        }
//        return num[num.length-1];
//    }

    /**
     * @description: 异或法
     * @param nums
     * @return
     */
    public int SingleNumber(int[] nums){
        int num = 0;
        for (int i=0;i<nums.length;i++){
            num = num^nums[i];
        }
        return num;
    }

}
